/**
   \file      BaseLog.hpp
   \brief     This is the abstract interface for all log devices.
   \author    Marco Siciliano

   LibLog implementation.

   A library to log into several devices.
   Copyright (C) Marco Siciliano 2002 [marco@siciliano.de]

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

#ifndef BASE_LOG_HPP
#define BASE_LOG_HPP

#include <string>

#include <Log.hpp>

/**
   \class CBaseLog
   This is the abstract interface for all log devices.
*/
class CBaseLog 
{
public:
	/// Constructor
    CBaseLog(const std::string &strName) : m_strName(strName) {};

	/// Destructor
    virtual ~CBaseLog() {};

public:
	/**
	   Returns the name of the actual log device.
	*/
    const std::string &name() const { return m_strName; }

public:
	/// Interface for debug log messages
    virtual void logDebug  (const std::string &eventMessage) = 0;

	/// Interface for standard messages.
    virtual void logMessage(const std::string &eventMessage) = 0;

	/// Interface for error messages.
    virtual void logError  (const std::string &eventMessage) = 0;

	/// Interface for fatal error messages.
    virtual void logFatal  (const std::string &eventMessage) = 0;

private:
    std::string m_strName;
};

#endif

